package com.example.demo.service;


import com.example.demo.entity.ArticleInfo;
import com.example.demo.entity.vo.ArticleInfoVO;
import com.example.demo.mapper.ArticleMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


/**
 * 在当前业务中，由于业务简单，所以只是一个中转的作用
 */

/**
 * 首先就是加注解，和 注入 Mapper
 */
@Service
public class ArticleService {

    @Autowired
    private ArticleMapper articleMapper;

    // 添加文章
    public int add(ArticleInfo articleInfo) {
        return articleMapper.add(articleInfo);
    }

    // 查询文章，有身份校验
    public ArticleInfo getDetailByIdAndUid(Integer id , Integer uid) {
        return articleMapper.getDetailByIdAndUid(id,uid);
    }

    // 修改文章
    public int update(ArticleInfo articleInfo) {
        return articleMapper.update(articleInfo);
    }

    // 查询某篇文章，没有身份校验（公共列表页中的某一篇文章的详情页）
    public ArticleInfoVO getDetail(Integer id) {
        return articleMapper.getDetail(id);
    }


    // 阅读量的增加
    public int addRCount(Integer id) {
        return articleMapper.addRCount(id);
    }


    // 根据 uid 来查询个人的文章，并显示到列表页
    public List<ArticleInfo> getMyListByUid(Integer uid) {
        return articleMapper.getMyListByUid(uid);
    }

//     这里我们需要判断归属人的问题 -->
//     方案1：先查询文章，之后根据uid 和 当前登录用户 来判断是否一致 ， 需要两步操作-->
//     方案2：直接传递过来一个uid，在 sql 中进行判断,选择方案2 更巧妙-->
    public int del(Integer id,Integer uid) {
        return articleMapper.del(id,uid);
    }


    // 分页查询文章，因为没有作者名字所以ArticleInfo 就可以了
    public List<ArticleInfo> getListByPage(Integer pageSize,Integer offset) {
        return articleMapper.getListByPage(pageSize,offset);
    }

    // 查询总页数,为了找到 resultType 的类型，所以用 Integer ,来自于 java.lang ， 而不用int
    public Integer getCount() {
        return articleMapper.getCount();
    }
}
